A heating, ventilation and air conditioning (HVAC) system commonly employs a controller for governing the operation of at least some part of the HVAC system. For example, a rooftop unit (RTU), which is most often used to condition a commercial building, may employ a controller to activate a compressor or a furnace to cool or warm air and a blower to deliver the cool or warm air to the building beneath. A controller produces one or more output (control) signals based upon one or more input (sense) signals.
Controllers often include a keypad configured to allow a person, such as a technician or installer, to configure, diagnose or control the operation of the HVAC system. The keypad has multiple keys (or, synonymously, buttons), typically arranged in a two-dimensional array of columns and rows, that generate input signals to the controller when depressed. In a typical keypad, each key produces a unique input signal.
The keypad is merely an input device; other circuitry must be provided to receive and act on the input signals the keypad provides. In the case of an HVAC controller, the controller's processor is configured to perform this function. Two conventional alternative approaches may be used to couple a keypad to a processor. A first approach is to couple each address line representing each column and row of the keypad to a different input pin of the processor. For example, a keypad having three columns and four rows would use 3+4=7 input pins. The pressing of a key manifests as a change of state in the two address lines corresponding to the column and row in which the key lies. The processor continually scans (or, synonymously, polls) the pins to detect whether the states of any of the address lines have changed, thereby indicating the occurrence of a keystroke and identifying the particular key pressed. A second approach to couple a keypad to a processor is to couple a line corresponding to each key to a different input pin of the processor. For example, a keypad having three columns and four rows would use 3×4=12 input pins. As with the first approach, the processor continually scans the pins to detect whether the state of any of the lines has changed, thereby indicating the occurrence of a keystroke and identifying the particular key pressed.
Unfortunately, both approaches have shortcomings. The scanning required by the first approach is relatively complex, consumes significant processing resources (“bandwidth”) and ultimately increases the overall cost and power consumption of the controller. The second approach requires substantially less and simpler scanning. Unfortunately, it requires more pins than the first approach, which typically increases the overall cost and complexity of the controller. Nevertheless, both approaches are commonly employed in commercially available HVAC controllers.